   1              		.syntax unified
   2              		.cpu cortex-m3
   3              		.fpu softvfp
   4              		.eabi_attribute 20, 1
   5              		.eabi_attribute 21, 1
   6              		.eabi_attribute 23, 3
   7              		.eabi_attribute 24, 1
   8              		.eabi_attribute 25, 1
   9              		.eabi_attribute 26, 1
  10              		.eabi_attribute 30, 4
  11              		.eabi_attribute 34, 1
  12              		.eabi_attribute 18, 4
  13              		.thumb
  14              		.syntax unified
  15              		.file	"servus.c"
  16              		.text
  17              	.Ltext0:
  18              		.cfi_sections	.debug_frame
  19              		.section	.text.servus_CallSytem,"ax",%progbits
  20              		.align	1
  21              		.thumb
  22              		.thumb_func
  24              	servus_CallSytem:
  25              	.LFB4:
  26              		.file 1 "uc_libc_dev/motors/servus.c"
   1:uc_libc_dev/motors/servus.c **** #include "servus.h"
   2:uc_libc_dev/motors/servus.c **** 
   3:uc_libc_dev/motors/servus.c **** 
   4:uc_libc_dev/motors/servus.c **** // COMPORTAMENTO DO SERVOS - resolução em 10uS
   5:uc_libc_dev/motors/servus.c **** //                       TH             TL
   6:uc_libc_dev/motors/servus.c **** // Pulso para o servo: ######________________________
   7:uc_libc_dev/motors/servus.c **** //
   8:uc_libc_dev/motors/servus.c **** // Tempos TH	Servo normal	Servo de modo continuo
   9:uc_libc_dev/motors/servus.c **** // 1000ms		0º 				Máxima velocidade sentido antihorário
  10:uc_libc_dev/motors/servus.c **** // 1250ms		45º 			Média velocidade sentido antihorário
  11:uc_libc_dev/motors/servus.c **** // 1500ms		90º				Parado
  12:uc_libc_dev/motors/servus.c **** // 1750ms		135º 			Média velocidade sentido horário
  13:uc_libc_dev/motors/servus.c **** // 2000ms		180º			Máxima velocidade sentido horário
  14:uc_libc_dev/motors/servus.c **** // TL = 20ms
  15:uc_libc_dev/motors/servus.c **** 
  16:uc_libc_dev/motors/servus.c **** 
  17:uc_libc_dev/motors/servus.c **** // COMPORTAMENTO DO SENSORES ULTRASOM
  18:uc_libc_dev/motors/servus.c **** //          (10uS) trigger      (200uS) Tempo de   	    (200uS) Tempo que o  	(100us) Resposta 	(38
  19:uc_libc_dev/motors/servus.c **** //			 para o módulo	  excitação do ultrasom      módulo espera para  	 de aceitação		   Quando enco
  20:uc_libc_dev/motors/servus.c **** //							   (8 pulsos de 40Khz)	  começar a leiturado eco      do trigger
  21:uc_libc_dev/motors/servus.c **** // --------|--------------|-------------------------|-------------------------|-------------------|
  22:uc_libc_dev/motors/servus.c **** // _________HHHHHHHHHHHHHH_________________________________________________________________________
  23:uc_libc_dev/motors/servus.c **** // ________________________XXXXXXXXXXXXXXXXXXXXXXXXX_______________________________________________
  24:uc_libc_dev/motors/servus.c **** // ___________________________________________________________________________HHHHHHHHHHHHHHHHHHHH_
  25:uc_libc_dev/motors/servus.c **** // ___________________________________________________________________________HHHHHHHHHHHHHHHHHHHHH
  26:uc_libc_dev/motors/servus.c **** // ___________________________________________________________________________HHHHHHHHHHHHHHHHHHHHH
  27:uc_libc_dev/motors/servus.c **** //		O pino echo elevará após a exicitação do ultrasom (8 pulsos de 40Khz) e ficará em alta pelo men
  28:uc_libc_dev/motors/servus.c **** 
  29:uc_libc_dev/motors/servus.c **** // ATENÇÃO: O período de medição no hc-sr04 é de 50ms, se houver outro trigger dentro desse interva
  30:uc_libc_dev/motors/servus.c **** 
  31:uc_libc_dev/motors/servus.c **** 
  32:uc_libc_dev/motors/servus.c **** #if (US04_USES == pdON)
  33:uc_libc_dev/motors/servus.c **** typedef struct {
  34:uc_libc_dev/motors/servus.c **** 	unsigned modeContinuous:1;				// Sinaliza para ficar fazendo medição de forma continua ou não
  35:uc_libc_dev/motors/servus.c **** 	volatile unsigned measure:1; 			// Sinaliza quando começar as medições
  36:uc_libc_dev/motors/servus.c **** 	volatile unsigned done:1;				// Sinaliza quando as medições estão prontas
  37:uc_libc_dev/motors/servus.c **** 	volatile int Fdetected;
  38:uc_libc_dev/motors/servus.c **** 	volatile int Ftriggerok;
  39:uc_libc_dev/motors/servus.c **** 	volatile uint FCont;					// Contador micro segundos para o gerenciador do US
  40:uc_libc_dev/motors/servus.c **** 	volatile int FModule;					// Guarda o módulo atual para medição
  41:uc_libc_dev/motors/servus.c **** 	volatile uint measurements[US04_N_MODULE];
  42:uc_libc_dev/motors/servus.c **** } tUs04;
  43:uc_libc_dev/motors/servus.c **** static tUs04 us04;
  44:uc_libc_dev/motors/servus.c **** static void us04_Trigger(uint module, uint action);
  45:uc_libc_dev/motors/servus.c **** static uint us04_Echo(uint module);
  46:uc_libc_dev/motors/servus.c **** #endif // #if (US04_USES == pdON)
  47:uc_libc_dev/motors/servus.c **** 
  48:uc_libc_dev/motors/servus.c **** typedef struct {
  49:uc_libc_dev/motors/servus.c **** 	unsigned enable:1;
  50:uc_libc_dev/motors/servus.c **** 	uint pos;
  51:uc_libc_dev/motors/servus.c **** 	volatile s32 count;
  52:uc_libc_dev/motors/servus.c **** } tServo;
  53:uc_libc_dev/motors/servus.c **** 
  54:uc_libc_dev/motors/servus.c **** typedef struct {
  55:uc_libc_dev/motors/servus.c **** 	tServo servo[SERVO_N_MODULE];
  56:uc_libc_dev/motors/servus.c **** 	volatile s32 intervalUs;
  57:uc_libc_dev/motors/servus.c **** } tServoCtrl;
  58:uc_libc_dev/motors/servus.c **** static tServoCtrl servoCtrl;
  59:uc_libc_dev/motors/servus.c **** 
  60:uc_libc_dev/motors/servus.c **** static void servus_CallSytem(void);
  61:uc_libc_dev/motors/servus.c **** 
  62:uc_libc_dev/motors/servus.c **** void servus_Init(void) {
  63:uc_libc_dev/motors/servus.c **** 	servoCtrl.intervalUs = 0;
  64:uc_libc_dev/motors/servus.c **** 	uint x;	for (x=0;x<SERVO_N_MODULE;x++) {
  65:uc_libc_dev/motors/servus.c **** 		servoCtrl.servo[x].count= 1500;
  66:uc_libc_dev/motors/servus.c **** 		servoCtrl.servo[x].pos= 1500;
  67:uc_libc_dev/motors/servus.c **** 		servoCtrl.servo[x].enable = 1;
  68:uc_libc_dev/motors/servus.c **** 	}
  69:uc_libc_dev/motors/servus.c **** 
  70:uc_libc_dev/motors/servus.c **** 	#if (US04_USES == pdON)
  71:uc_libc_dev/motors/servus.c **** 	us04_SetupPortsModule1();
  72:uc_libc_dev/motors/servus.c **** 	#if (US04_N_MODULE > 1 )
  73:uc_libc_dev/motors/servus.c **** 	us04_SetupPortsModule2();
  74:uc_libc_dev/motors/servus.c **** 	#endif
  75:uc_libc_dev/motors/servus.c **** 	#if (US04_N_MODULE > 2 )
  76:uc_libc_dev/motors/servus.c **** 	us04_SetupPortsModule3();
  77:uc_libc_dev/motors/servus.c **** 	#endif
  78:uc_libc_dev/motors/servus.c **** 	#if (US04_N_MODULE > 3 )
  79:uc_libc_dev/motors/servus.c **** 	us04_SetupPortsModule4();
  80:uc_libc_dev/motors/servus.c **** 	#endif
  81:uc_libc_dev/motors/servus.c **** 
  82:uc_libc_dev/motors/servus.c **** 	us04.modeContinuous = 0;	// Não medir de forma continua
  83:uc_libc_dev/motors/servus.c **** 	us04.measure = 0; 			// Sinaliza para não fazer as medições
  84:uc_libc_dev/motors/servus.c **** 	us04.done = 0;				// Nenhuma medição foi realizada ainda
  85:uc_libc_dev/motors/servus.c **** 	us04.FModule = 1;			// Sinaliza que o módulo 1 será o primeiro a ser medido
  86:uc_libc_dev/motors/servus.c **** 	us04.FCont = 0;				// Contador em micro segundos do CallSystem do US
  87:uc_libc_dev/motors/servus.c **** 
  88:uc_libc_dev/motors/servus.c **** 	for (x=0;x<US04_N_MODULE;x++) {
  89:uc_libc_dev/motors/servus.c **** 		us04.measurements[x] = 0;
  90:uc_libc_dev/motors/servus.c **** 		us04_Trigger(x, pdOFF); // Desligar sinais dos triggers dos módulos
  91:uc_libc_dev/motors/servus.c **** 	}
  92:uc_libc_dev/motors/servus.c **** 
  93:uc_libc_dev/motors/servus.c **** 	us04.Fdetected = 0;		// Sinaliza para não há objeto detectado
  94:uc_libc_dev/motors/servus.c **** 	us04.Ftriggerok = 0;		// Inicializar pedido de trigger
  95:uc_libc_dev/motors/servus.c **** 
  96:uc_libc_dev/motors/servus.c **** 	#if US04_USE_DEBUG == pdON
  97:uc_libc_dev/motors/servus.c **** 	US04_DBGTRIGGER_DIR |= US04_DBGTRIGGER;
  98:uc_libc_dev/motors/servus.c **** 	US04_DBGTRIGGER_CLR = US04_DBGTRIGGER;
  99:uc_libc_dev/motors/servus.c **** 	US04_DBGTRIGGEROK_DIR |= US04_DBGTRIGGEROK;
 100:uc_libc_dev/motors/servus.c **** 	US04_DBGTRIGGEROK_CLR = US04_DBGTRIGGEROK;
 101:uc_libc_dev/motors/servus.c **** 	US04_DBGDETECTED_DIR |= US04_DBGDETECTED;
 102:uc_libc_dev/motors/servus.c **** 	US04_DBGDETECTED_CLR = US04_DBGDETECTED;
 103:uc_libc_dev/motors/servus.c **** 	#endif
 104:uc_libc_dev/motors/servus.c **** 	#endif //#if (US04_USES == pdON)
 105:uc_libc_dev/motors/servus.c **** 
 106:uc_libc_dev/motors/servus.c **** 	servo1_SetupPorts();
 107:uc_libc_dev/motors/servus.c **** 	#if (SERVO_N_MODULE > 1)
 108:uc_libc_dev/motors/servus.c **** 	servo2_SetupPorts();
 109:uc_libc_dev/motors/servus.c **** 	#endif
 110:uc_libc_dev/motors/servus.c **** 	#if (SERVO_N_MODULE > 2)
 111:uc_libc_dev/motors/servus.c **** 	servo3_SetupPorts();
 112:uc_libc_dev/motors/servus.c **** 	#endif
 113:uc_libc_dev/motors/servus.c **** 	#if (SERVO_N_MODULE > 3)
 114:uc_libc_dev/motors/servus.c **** 	servo4_SetupPorts();
 115:uc_libc_dev/motors/servus.c **** 	#endif
 116:uc_libc_dev/motors/servus.c **** 	#if (SERVO_N_MODULE > 4)
 117:uc_libc_dev/motors/servus.c **** 	servo5_SetupPorts();
 118:uc_libc_dev/motors/servus.c **** 	#endif
 119:uc_libc_dev/motors/servus.c **** 	#if (SERVO_N_MODULE > 5)
 120:uc_libc_dev/motors/servus.c **** 	servo6_SetupPorts();
 121:uc_libc_dev/motors/servus.c **** 	#endif
 122:uc_libc_dev/motors/servus.c **** 
 123:uc_libc_dev/motors/servus.c **** 	servus_TimeInit();
 124:uc_libc_dev/motors/servus.c **** 	servus_SetIntHandler(servus_CallSytem);
 125:uc_libc_dev/motors/servus.c **** }
 126:uc_libc_dev/motors/servus.c **** 
 127:uc_libc_dev/motors/servus.c **** void servus_Finish(void) {
 128:uc_libc_dev/motors/servus.c **** 	servus_TimeStop();		// Desligo o timer para não gerar int para servus_CallSytem
 129:uc_libc_dev/motors/servus.c **** }
 130:uc_libc_dev/motors/servus.c **** 
 131:uc_libc_dev/motors/servus.c **** 
 132:uc_libc_dev/motors/servus.c **** #if (US04_USES == pdON)
 133:uc_libc_dev/motors/servus.c **** 
 134:uc_libc_dev/motors/servus.c **** // Inicializa a medição com ultrasom com modo continuo ou uma única medição
 135:uc_libc_dev/motors/servus.c **** // parametro modeCont:  pdFALSE: sinaliza para fazer uma única medição
 136:uc_libc_dev/motors/servus.c **** //						pdTRUE: Sinaliza para medir de forma continua
 137:uc_libc_dev/motors/servus.c **** void us04_StartMeasure(uint modeCont) {
 138:uc_libc_dev/motors/servus.c **** 	us04.modeContinuous = modeCont;
 139:uc_libc_dev/motors/servus.c **** 	if (us04.measure) return;
 140:uc_libc_dev/motors/servus.c **** 	us04.done = 0; 			// Sinaliza que a conversão não está pronta
 141:uc_libc_dev/motors/servus.c **** 	us04.measure = 1; 		// Sinaliza para fazer as medições
 142:uc_libc_dev/motors/servus.c **** }
 143:uc_libc_dev/motors/servus.c **** 
 144:uc_libc_dev/motors/servus.c **** // para qualquer medição seja no modo continuo ou não
 145:uc_libc_dev/motors/servus.c **** void us04_StopMeasure(void) {
 146:uc_libc_dev/motors/servus.c **** 	us04.modeContinuous = 0;
 147:uc_libc_dev/motors/servus.c **** 	us04.measure = 0; 		// Sinaliza para fazer as medições
 148:uc_libc_dev/motors/servus.c **** }
 149:uc_libc_dev/motors/servus.c **** 
 150:uc_libc_dev/motors/servus.c **** // Retorna em CM o valor lido pelo módulo US
 151:uc_libc_dev/motors/servus.c **** // Parametro servoSel: Sinaliza qual o servo a receber a nova posição, valor de 1 a US04_N_MODULE
 152:uc_libc_dev/motors/servus.c **** // Retorna: 0: Se não encontrou o ostáculo, senão retorna com o valor em centimetros
 153:uc_libc_dev/motors/servus.c **** //			errDEVICE_NOT_FOUND: Se o módulo não existe
 154:uc_libc_dev/motors/servus.c **** //			errDEVICE_VALUE_NOT_READY: Se o módulo ainda não terminou a medição
 155:uc_libc_dev/motors/servus.c **** int us04_ReadMeasureCM(uint module) {
 156:uc_libc_dev/motors/servus.c **** 	if ( (module == 0) || (module > US04_N_MODULE)) return errDEVICE_NOT_FOUND;
 157:uc_libc_dev/motors/servus.c **** 	if (us04.done == 0) return errDEVICE_VALUE_NOT_READY;
 158:uc_libc_dev/motors/servus.c **** 	if (us04.measurements[module-1] == 0) return 0;
 159:uc_libc_dev/motors/servus.c **** 	return (us04.measurements[module-1]/58);
 160:uc_libc_dev/motors/servus.c **** }
 161:uc_libc_dev/motors/servus.c **** 
 162:uc_libc_dev/motors/servus.c **** // Ligar ou desligar o trigger do módulo
 163:uc_libc_dev/motors/servus.c **** static void us04_Trigger(uint module, uint action) {
 164:uc_libc_dev/motors/servus.c **** 	if (module == 1) us04_TriggerModule1(action);
 165:uc_libc_dev/motors/servus.c **** 	#if (US04_N_MODULE > 1 )
 166:uc_libc_dev/motors/servus.c **** 	if (module == 2) us04_TriggerModule2(action);
 167:uc_libc_dev/motors/servus.c **** 	#endif
 168:uc_libc_dev/motors/servus.c **** 	#if (US04_N_MODULE > 2 )
 169:uc_libc_dev/motors/servus.c **** 	if (module == 3) us04_TriggerModule3(action);
 170:uc_libc_dev/motors/servus.c **** 	#endif
 171:uc_libc_dev/motors/servus.c **** 	#if (US04_N_MODULE > 3 )
 172:uc_libc_dev/motors/servus.c **** 	if (module == 4) us04_TriggerModule4(action);
 173:uc_libc_dev/motors/servus.c **** 	#endif
 174:uc_libc_dev/motors/servus.c **** }
 175:uc_libc_dev/motors/servus.c **** 
 176:uc_libc_dev/motors/servus.c **** // retorna 1 se o pino de eco = 1 senão retorna 0
 177:uc_libc_dev/motors/servus.c **** static uint us04_Echo(uint module) {
 178:uc_libc_dev/motors/servus.c **** 	uint result = 0;
 179:uc_libc_dev/motors/servus.c **** 	if ((module == 1) && (us04_EchoModule1() > 0)) result = 1;
 180:uc_libc_dev/motors/servus.c **** 	#if (US04_N_MODULE > 1 )
 181:uc_libc_dev/motors/servus.c **** 	if ((module == 2) && (us04_EchoModule2() > 0)) result = 1;
 182:uc_libc_dev/motors/servus.c **** 	#endif
 183:uc_libc_dev/motors/servus.c **** 	#if (US04_N_MODULE > 2 )
 184:uc_libc_dev/motors/servus.c **** 	if ((module == 3) && (us04_EchoModule3() > 0)) result = 1;
 185:uc_libc_dev/motors/servus.c **** 	#endif
 186:uc_libc_dev/motors/servus.c **** 	#if (US04_N_MODULE > 3 )
 187:uc_libc_dev/motors/servus.c **** 	if ((module == 4) && (us04_EchoModule4() > 0)) result = 1;
 188:uc_libc_dev/motors/servus.c **** 	#endif
 189:uc_libc_dev/motors/servus.c **** 
 190:uc_libc_dev/motors/servus.c **** 	return result;
 191:uc_libc_dev/motors/servus.c **** }
 192:uc_libc_dev/motors/servus.c **** #endif //#if (US04_USES == pdON)
 193:uc_libc_dev/motors/servus.c **** 
 194:uc_libc_dev/motors/servus.c **** // Determina a posição do servo motor
 195:uc_libc_dev/motors/servus.c **** // Parametro servoSel: Sinaliza qual o servo a receber a nova posição, valor de 1 a SERVO_N_MODULE
 196:uc_libc_dev/motors/servus.c **** // Retorna: pdPASS se o comando foi executado com sucesso
 197:uc_libc_dev/motors/servus.c **** //			errDEVICE_NOT_FOUND: Se o servo não existe
 198:uc_libc_dev/motors/servus.c **** //			errDEVICE_VALUE_INVALID: Valor inválido
 199:uc_libc_dev/motors/servus.c **** int servus_SetPos(uint servo, int us) {
 200:uc_libc_dev/motors/servus.c **** 	if ( (servo==0) || (servo>SERVO_N_MODULE) ) return errDEVICE_NOT_FOUND;
 201:uc_libc_dev/motors/servus.c **** 	if ( (us<100) || (us>3000)) return errDEVICE_VALUE_INVALID;
 202:uc_libc_dev/motors/servus.c **** 	servoCtrl.servo[servo-1].pos = us;
 203:uc_libc_dev/motors/servus.c **** 
 204:uc_libc_dev/motors/servus.c **** 	return pdPASS;
 205:uc_libc_dev/motors/servus.c **** }
 206:uc_libc_dev/motors/servus.c **** 
 207:uc_libc_dev/motors/servus.c **** // Habilita não a saida PWM para o servo
 208:uc_libc_dev/motors/servus.c **** // Parametro servoSel: Sinaliza qual o servo a receber a nova posição, valor de 1 a SERVO_N_MODULE
 209:uc_libc_dev/motors/servus.c **** // Retorna: pdPASS se o comando foi executado com sucesso
 210:uc_libc_dev/motors/servus.c **** //			errDEVICE_NOT_FOUND: Se o servo não existe
 211:uc_libc_dev/motors/servus.c **** int servus_Enable(uint servo, uint en) {
 212:uc_libc_dev/motors/servus.c **** 	if ( (servo == 0) || (servo > SERVO_N_MODULE) ) return errDEVICE_NOT_FOUND;
 213:uc_libc_dev/motors/servus.c **** 	servoCtrl.servo[servo-1].enable = (en == 0)?0:1;
 214:uc_libc_dev/motors/servus.c **** 	servoCtrl.servo[servo-1].count = 0;
 215:uc_libc_dev/motors/servus.c **** 	return pdPASS;
 216:uc_libc_dev/motors/servus.c **** }
 217:uc_libc_dev/motors/servus.c **** 
 218:uc_libc_dev/motors/servus.c **** // Tick de sistema para controle dos servos e medições dos módulos de ultrasom.
 219:uc_libc_dev/motors/servus.c **** //	Esta função será chamada a cada 10us pelo timer do uC
 220:uc_libc_dev/motors/servus.c **** static void servus_CallSytem(void) {
  27              		.loc 1 220 0
  28              		.cfi_startproc
  29              		@ args = 0, pretend = 0, frame = 0
  30              		@ frame_needed = 0, uses_anonymous_args = 0
 221:uc_libc_dev/motors/servus.c **** 	uint x;
 222:uc_libc_dev/motors/servus.c **** 
 223:uc_libc_dev/motors/servus.c **** 	// ###############################################################################################
 224:uc_libc_dev/motors/servus.c **** 	// CONTROLE DOS SERVOS
 225:uc_libc_dev/motors/servus.c **** 	if (servoCtrl.intervalUs <= 0) {
  31              		.loc 1 225 0
  32 0000 3F4B     		ldr	r3, .L43
 220:uc_libc_dev/motors/servus.c **** 	uint x;
  33              		.loc 1 220 0
  34 0002 10B5     		push	{r4, lr}
  35              	.LCFI0:
  36              		.cfi_def_cfa_offset 8
  37              		.cfi_offset 4, -8
  38              		.cfi_offset 14, -4
  39              		.loc 1 225 0
  40 0004 9A6C     		ldr	r2, [r3, #72]
  41 0006 002A     		cmp	r2, #0
  42 0008 0CDC     		bgt	.L2
 226:uc_libc_dev/motors/servus.c **** 	 	servoCtrl.intervalUs = 20000;
  43              		.loc 1 226 0
  44 000a 44F62062 		movw	r2, #20000
 227:uc_libc_dev/motors/servus.c **** 	 	for (x=0;x<SERVO_N_MODULE;x++) servoCtrl.servo[x].count = servoCtrl.servo[x].pos;
  45              		.loc 1 227 0
  46 000e 0C24     		movs	r4, #12
 226:uc_libc_dev/motors/servus.c **** 	 	servoCtrl.intervalUs = 20000;
  47              		.loc 1 226 0
  48 0010 9A64     		str	r2, [r3, #72]
  49              	.LVL0:
  50              		.loc 1 227 0
  51 0012 0022     		movs	r2, #0
  52              	.LVL1:
  53              	.L3:
  54              		.loc 1 227 0 is_stmt 0 discriminator 3
  55 0014 04FB0231 		mla	r1, r4, r2, r3
  56 0018 0132     		adds	r2, r2, #1
  57              	.LVL2:
  58 001a 4868     		ldr	r0, [r1, #4]
  59 001c 062A     		cmp	r2, #6
  60 001e 8860     		str	r0, [r1, #8]
  61 0020 F8D1     		bne	.L3
  62 0022 02E0     		b	.L4
  63              	.LVL3:
  64              	.L2:
 228:uc_libc_dev/motors/servus.c **** 	 } else servoCtrl.intervalUs -= 10;
  65              		.loc 1 228 0 is_stmt 1
  66 0024 9A6C     		ldr	r2, [r3, #72]
  67 0026 0A3A     		subs	r2, r2, #10
  68 0028 9A64     		str	r2, [r3, #72]
  69              	.L4:
 229:uc_libc_dev/motors/servus.c **** 
 230:uc_libc_dev/motors/servus.c **** 	if ( (servoCtrl.servo[0].count > 0) && (servoCtrl.servo[0].enable) ) {
  70              		.loc 1 230 0
  71 002a 9968     		ldr	r1, [r3, #8]
  72 002c 344A     		ldr	r2, .L43
  73 002e 0029     		cmp	r1, #0
  74 0030 09DD     		ble	.L5
  75              		.loc 1 230 0 is_stmt 0 discriminator 1
  76 0032 1178     		ldrb	r1, [r2]	@ zero_extendqisi2
  77 0034 C807     		lsls	r0, r1, #31
  78 0036 06D5     		bpl	.L5
 231:uc_libc_dev/motors/servus.c **** 			servoCtrl.servo[0].count -= 10;
  79              		.loc 1 231 0 is_stmt 1
  80 0038 9168     		ldr	r1, [r2, #8]
  81 003a 0A39     		subs	r1, r1, #10
  82 003c 9160     		str	r1, [r2, #8]
 232:uc_libc_dev/motors/servus.c **** 			SERVO1_SET = SERVO1;
  83              		.loc 1 232 0
  84 003e 4FF48061 		mov	r1, #1024
  85 0042 304A     		ldr	r2, .L43+4
  86 0044 02E0     		b	.L36
  87              	.L5:
 233:uc_libc_dev/motors/servus.c **** 	} else	SERVO1_CLR = SERVO1;
  88              		.loc 1 233 0
  89 0046 304A     		ldr	r2, .L43+8
  90 0048 4FF48061 		mov	r1, #1024
  91              	.L36:
  92 004c 1160     		str	r1, [r2]
 234:uc_libc_dev/motors/servus.c **** 
 235:uc_libc_dev/motors/servus.c **** 	#if (SERVO_N_MODULE > 1)
 236:uc_libc_dev/motors/servus.c **** 	if ( (servoCtrl.servo[1].count > 0) && (servoCtrl.servo[1].enable) ) {
  93              		.loc 1 236 0
  94 004e 5969     		ldr	r1, [r3, #20]
  95 0050 2B4A     		ldr	r2, .L43
  96 0052 0029     		cmp	r1, #0
  97 0054 09DD     		ble	.L7
  98              		.loc 1 236 0 is_stmt 0 discriminator 1
  99 0056 117B     		ldrb	r1, [r2, #12]	@ zero_extendqisi2
 100 0058 C907     		lsls	r1, r1, #31
 101 005a 06D5     		bpl	.L7
 237:uc_libc_dev/motors/servus.c **** 			servoCtrl.servo[1].count -= 10;
 102              		.loc 1 237 0 is_stmt 1
 103 005c 5169     		ldr	r1, [r2, #20]
 104 005e 0A39     		subs	r1, r1, #10
 105 0060 5161     		str	r1, [r2, #20]
 238:uc_libc_dev/motors/servus.c **** 			SERVO2_SET = SERVO2;
 106              		.loc 1 238 0
 107 0062 4FF40071 		mov	r1, #512
 108 0066 274A     		ldr	r2, .L43+4
 109 0068 02E0     		b	.L37
 110              	.L7:
 239:uc_libc_dev/motors/servus.c **** 	} else	SERVO2_CLR = SERVO2;
 111              		.loc 1 239 0
 112 006a 274A     		ldr	r2, .L43+8
 113 006c 4FF40071 		mov	r1, #512
 114              	.L37:
 115 0070 1160     		str	r1, [r2]
 240:uc_libc_dev/motors/servus.c **** 	#endif
 241:uc_libc_dev/motors/servus.c **** 	#if (SERVO_N_MODULE > 2)
 242:uc_libc_dev/motors/servus.c **** 	if ( (servoCtrl.servo[2].count > 0) && (servoCtrl.servo[2].enable) ) {
 116              		.loc 1 242 0
 117 0072 196A     		ldr	r1, [r3, #32]
 118 0074 224A     		ldr	r2, .L43
 119 0076 0029     		cmp	r1, #0
 120 0078 09DD     		ble	.L9
 121              		.loc 1 242 0 is_stmt 0 discriminator 1
 122 007a 117E     		ldrb	r1, [r2, #24]	@ zero_extendqisi2
 123 007c CC07     		lsls	r4, r1, #31
 124 007e 06D5     		bpl	.L9
 243:uc_libc_dev/motors/servus.c **** 			servoCtrl.servo[2].count -= 10;
 125              		.loc 1 243 0 is_stmt 1
 126 0080 116A     		ldr	r1, [r2, #32]
 127 0082 0A39     		subs	r1, r1, #10
 128 0084 1162     		str	r1, [r2, #32]
 244:uc_libc_dev/motors/servus.c **** 			SERVO3_SET = SERVO3;
 129              		.loc 1 244 0
 130 0086 4FF48071 		mov	r1, #256
 131 008a 1E4A     		ldr	r2, .L43+4
 132 008c 02E0     		b	.L38
 133              	.L9:
 245:uc_libc_dev/motors/servus.c **** 	} else	SERVO3_CLR = SERVO3;
 134              		.loc 1 245 0
 135 008e 1E4A     		ldr	r2, .L43+8
 136 0090 4FF48071 		mov	r1, #256
 137              	.L38:
 138 0094 1160     		str	r1, [r2]
 246:uc_libc_dev/motors/servus.c **** 
 247:uc_libc_dev/motors/servus.c **** 	#endif
 248:uc_libc_dev/motors/servus.c **** 	#if (SERVO_N_MODULE > 3)
 249:uc_libc_dev/motors/servus.c **** 	if ( (servoCtrl.servo[3].count > 0) && (servoCtrl.servo[3].enable) ) {
 139              		.loc 1 249 0
 140 0096 D96A     		ldr	r1, [r3, #44]
 141 0098 194A     		ldr	r2, .L43
 142 009a 0029     		cmp	r1, #0
 143 009c 09DD     		ble	.L11
 144              		.loc 1 249 0 is_stmt 0 discriminator 1
 145 009e 92F82410 		ldrb	r1, [r2, #36]	@ zero_extendqisi2
 146 00a2 C807     		lsls	r0, r1, #31
 147 00a4 05D5     		bpl	.L11
 250:uc_libc_dev/motors/servus.c **** 			servoCtrl.servo[3].count -= 10;
 148              		.loc 1 250 0 is_stmt 1
 149 00a6 D16A     		ldr	r1, [r2, #44]
 150 00a8 0A39     		subs	r1, r1, #10
 151 00aa D162     		str	r1, [r2, #44]
 251:uc_libc_dev/motors/servus.c **** 			SERVO4_SET = SERVO4;
 152              		.loc 1 251 0
 153 00ac 1021     		movs	r1, #16
 154 00ae 154A     		ldr	r2, .L43+4
 155 00b0 01E0     		b	.L39
 156              	.L11:
 252:uc_libc_dev/motors/servus.c **** 	} else	SERVO4_CLR = SERVO4;
 157              		.loc 1 252 0
 158 00b2 154A     		ldr	r2, .L43+8
 159 00b4 1021     		movs	r1, #16
 160              	.L39:
 161 00b6 1160     		str	r1, [r2]
 253:uc_libc_dev/motors/servus.c **** 	#endif
 254:uc_libc_dev/motors/servus.c **** 	#if (SERVO_N_MODULE > 4)
 255:uc_libc_dev/motors/servus.c **** 	if ( (servoCtrl.servo[4].count > 0) && (servoCtrl.servo[4].enable) ) {
 162              		.loc 1 255 0
 163 00b8 996B     		ldr	r1, [r3, #56]
 164 00ba 114A     		ldr	r2, .L43
 165 00bc 0029     		cmp	r1, #0
 166 00be 09DD     		ble	.L13
 167              		.loc 1 255 0 is_stmt 0 discriminator 1
 168 00c0 92F83010 		ldrb	r1, [r2, #48]	@ zero_extendqisi2
 169 00c4 C907     		lsls	r1, r1, #31
 170 00c6 05D5     		bpl	.L13
 256:uc_libc_dev/motors/servus.c **** 			servoCtrl.servo[4].count -= 10;
 171              		.loc 1 256 0 is_stmt 1
 172 00c8 916B     		ldr	r1, [r2, #56]
 173 00ca 0A39     		subs	r1, r1, #10
 174 00cc 9163     		str	r1, [r2, #56]
 257:uc_libc_dev/motors/servus.c **** 			SERVO5_SET = SERVO5;
 175              		.loc 1 257 0
 176 00ce 0221     		movs	r1, #2
 177 00d0 0C4A     		ldr	r2, .L43+4
 178 00d2 01E0     		b	.L40
 179              	.L13:
 258:uc_libc_dev/motors/servus.c **** 	} else	SERVO5_CLR = SERVO5;
 180              		.loc 1 258 0
 181 00d4 0C4A     		ldr	r2, .L43+8
 182 00d6 0221     		movs	r1, #2
 183              	.L40:
 184 00d8 1160     		str	r1, [r2]
 259:uc_libc_dev/motors/servus.c **** 	#endif
 260:uc_libc_dev/motors/servus.c **** 	#if (SERVO_N_MODULE > 5)
 261:uc_libc_dev/motors/servus.c **** 	if ( (servoCtrl.servo[5].count > 0) && (servoCtrl.servo[5].enable) ) {
 185              		.loc 1 261 0
 186 00da 5B6C     		ldr	r3, [r3, #68]
 187 00dc 084A     		ldr	r2, .L43
 188 00de 002B     		cmp	r3, #0
 189 00e0 09DD     		ble	.L15
 190              		.loc 1 261 0 is_stmt 0 discriminator 1
 191 00e2 92F83C30 		ldrb	r3, [r2, #60]	@ zero_extendqisi2
 192 00e6 DB07     		lsls	r3, r3, #31
 193 00e8 05D5     		bpl	.L15
 262:uc_libc_dev/motors/servus.c **** 			servoCtrl.servo[5].count -= 10;
 194              		.loc 1 262 0 is_stmt 1
 195 00ea 536C     		ldr	r3, [r2, #68]
 196 00ec 0A3B     		subs	r3, r3, #10
 197 00ee 5364     		str	r3, [r2, #68]
 263:uc_libc_dev/motors/servus.c **** 			SERVO6_SET = SERVO6;
 198              		.loc 1 263 0
 199 00f0 0122     		movs	r2, #1
 200 00f2 044B     		ldr	r3, .L43+4
 201 00f4 01E0     		b	.L41
 202              	.L15:
 264:uc_libc_dev/motors/servus.c **** 	} else	SERVO6_CLR = SERVO6;
 203              		.loc 1 264 0
 204 00f6 044B     		ldr	r3, .L43+8
 205 00f8 0122     		movs	r2, #1
 206              	.L41:
 207 00fa 1A60     		str	r2, [r3]
 208 00fc 10BD     		pop	{r4, pc}
 209              	.L44:
 210 00fe 00BF     		.align	2
 211              	.L43:
 212 0100 00000000 		.word	.LANCHOR0
 213 0104 38C00920 		.word	537509944
 214 0108 3CC00920 		.word	537509948
 215              		.cfi_endproc
 216              	.LFE4:
 218              		.section	.text.servus_Init,"ax",%progbits
 219              		.align	1
 220              		.global	servus_Init
 221              		.thumb
 222              		.thumb_func
 224              	servus_Init:
 225              	.LFB0:
  62:uc_libc_dev/motors/servus.c **** 	servoCtrl.intervalUs = 0;
 226              		.loc 1 62 0
 227              		.cfi_startproc
 228              		@ args = 0, pretend = 0, frame = 0
 229              		@ frame_needed = 0, uses_anonymous_args = 0
 230 0000 38B5     		push	{r3, r4, r5, lr}
 231              	.LCFI1:
 232              		.cfi_def_cfa_offset 16
 233              		.cfi_offset 3, -16
 234              		.cfi_offset 4, -12
 235              		.cfi_offset 5, -8
 236              		.cfi_offset 14, -4
  65:uc_libc_dev/motors/servus.c **** 		servoCtrl.servo[x].pos= 1500;
 237              		.loc 1 65 0
 238 0002 40F2DC54 		movw	r4, #1500
  63:uc_libc_dev/motors/servus.c **** 	uint x;	for (x=0;x<SERVO_N_MODULE;x++) {
 239              		.loc 1 63 0
 240 0006 234A     		ldr	r2, .L48
 241 0008 0023     		movs	r3, #0
 242 000a 9364     		str	r3, [r2, #72]
 243              	.LVL4:
  65:uc_libc_dev/motors/servus.c **** 		servoCtrl.servo[x].pos= 1500;
 244              		.loc 1 65 0
 245 000c 0C25     		movs	r5, #12
 246              	.LVL5:
 247              	.L46:
  65:uc_libc_dev/motors/servus.c **** 		servoCtrl.servo[x].pos= 1500;
 248              		.loc 1 65 0 is_stmt 0 discriminator 3
 249 000e 05FB03F1 		mul	r1, r5, r3
 250 0012 5018     		adds	r0, r2, r1
  66:uc_libc_dev/motors/servus.c **** 		servoCtrl.servo[x].enable = 1;
 251              		.loc 1 66 0 is_stmt 1 discriminator 3
 252 0014 4460     		str	r4, [r0, #4]
  65:uc_libc_dev/motors/servus.c **** 		servoCtrl.servo[x].pos= 1500;
 253              		.loc 1 65 0 discriminator 3
 254 0016 8460     		str	r4, [r0, #8]
  67:uc_libc_dev/motors/servus.c **** 	}
 255              		.loc 1 67 0 discriminator 3
 256 0018 505C     		ldrb	r0, [r2, r1]	@ zero_extendqisi2
  64:uc_libc_dev/motors/servus.c **** 		servoCtrl.servo[x].count= 1500;
 257              		.loc 1 64 0 discriminator 3
 258 001a 0133     		adds	r3, r3, #1
 259              	.LVL6:
  67:uc_libc_dev/motors/servus.c **** 	}
 260              		.loc 1 67 0 discriminator 3
 261 001c 40F00100 		orr	r0, r0, #1
  64:uc_libc_dev/motors/servus.c **** 		servoCtrl.servo[x].count= 1500;
 262              		.loc 1 64 0 discriminator 3
 263 0020 062B     		cmp	r3, #6
  67:uc_libc_dev/motors/servus.c **** 	}
 264              		.loc 1 67 0 discriminator 3
 265 0022 5054     		strb	r0, [r2, r1]
  64:uc_libc_dev/motors/servus.c **** 		servoCtrl.servo[x].count= 1500;
 266              		.loc 1 64 0 discriminator 3
 267 0024 F3D1     		bne	.L46
 106:uc_libc_dev/motors/servus.c **** 	#if (SERVO_N_MODULE > 1)
 268              		.loc 1 106 0
 269 0026 1C4B     		ldr	r3, .L48+4
 270              	.LVL7:
 271 0028 4FF48061 		mov	r1, #1024
 272 002c 1A68     		ldr	r2, [r3]
 273 002e 42F48062 		orr	r2, r2, #1024
 274 0032 1A60     		str	r2, [r3]
 275 0034 194A     		ldr	r2, .L48+8
 276 0036 1160     		str	r1, [r2]
 108:uc_libc_dev/motors/servus.c **** 	#endif
 277              		.loc 1 108 0
 278 0038 1968     		ldr	r1, [r3]
 279 003a 41F40071 		orr	r1, r1, #512
 280 003e 1960     		str	r1, [r3]
 281 0040 4FF40071 		mov	r1, #512
 282 0044 1160     		str	r1, [r2]
 111:uc_libc_dev/motors/servus.c **** 	#endif
 283              		.loc 1 111 0
 284 0046 1968     		ldr	r1, [r3]
 285 0048 41F48071 		orr	r1, r1, #256
 286 004c 1960     		str	r1, [r3]
 287 004e 4FF48071 		mov	r1, #256
 288 0052 1160     		str	r1, [r2]
 114:uc_libc_dev/motors/servus.c **** 	#endif
 289              		.loc 1 114 0
 290 0054 1968     		ldr	r1, [r3]
 291 0056 41F01001 		orr	r1, r1, #16
 292 005a 1960     		str	r1, [r3]
 293 005c 1021     		movs	r1, #16
 294 005e 1160     		str	r1, [r2]
 117:uc_libc_dev/motors/servus.c **** 	#endif
 295              		.loc 1 117 0
 296 0060 1968     		ldr	r1, [r3]
 297 0062 41F00201 		orr	r1, r1, #2
 298 0066 1960     		str	r1, [r3]
 299 0068 0221     		movs	r1, #2
 300 006a 1160     		str	r1, [r2]
 120:uc_libc_dev/motors/servus.c **** 	#endif
 301              		.loc 1 120 0
 302 006c 1968     		ldr	r1, [r3]
 303 006e 41F00101 		orr	r1, r1, #1
 304 0072 1960     		str	r1, [r3]
 305 0074 0121     		movs	r1, #1
 306 0076 1160     		str	r1, [r2]
 123:uc_libc_dev/motors/servus.c **** 	servus_SetIntHandler(servus_CallSytem);
 307              		.loc 1 123 0
 308 0078 0846     		mov	r0, r1
 309 007a 0322     		movs	r2, #3
 310 007c FFF7FEFF 		bl	timer1_Init
 311              	.LVL8:
 312 0080 FA20     		movs	r0, #250
 313 0082 FFF7FEFF 		bl	timer1_SetMatch0
 314              	.LVL9:
 125:uc_libc_dev/motors/servus.c **** 
 315              		.loc 1 125 0
 316 0086 BDE83840 		pop	{r3, r4, r5, lr}
 317              	.LCFI2:
 318              		.cfi_restore 14
 319              		.cfi_restore 5
 320              		.cfi_restore 4
 321              		.cfi_restore 3
 322              		.cfi_def_cfa_offset 0
 124:uc_libc_dev/motors/servus.c **** }
 323              		.loc 1 124 0
 324 008a 0549     		ldr	r1, .L48+12
 325 008c 0020     		movs	r0, #0
 326 008e FFF7FEBF 		b	timer1_SetIntHandler
 327              	.LVL10:
 328              	.L49:
 329 0092 00BF     		.align	2
 330              	.L48:
 331 0094 00000000 		.word	.LANCHOR0
 332 0098 20C00920 		.word	537509920
 333 009c 3CC00920 		.word	537509948
 334 00a0 00000000 		.word	servus_CallSytem
 335              		.cfi_endproc
 336              	.LFE0:
 338              		.section	.text.servus_Finish,"ax",%progbits
 339              		.align	1
 340              		.global	servus_Finish
 341              		.thumb
 342              		.thumb_func
 344              	servus_Finish:
 345              	.LFB1:
 127:uc_libc_dev/motors/servus.c **** 	servus_TimeStop();		// Desligo o timer para não gerar int para servus_CallSytem
 346              		.loc 1 127 0
 347              		.cfi_startproc
 348              		@ args = 0, pretend = 0, frame = 0
 349              		@ frame_needed = 0, uses_anonymous_args = 0
 350              		@ link register save eliminated.
 128:uc_libc_dev/motors/servus.c **** }
 351              		.loc 1 128 0
 352 0000 0020     		movs	r0, #0
 353 0002 FFF7FEBF 		b	timer1_Set
 354              	.LVL11:
 355              		.cfi_endproc
 356              	.LFE1:
 358              		.section	.text.servus_SetPos,"ax",%progbits
 359              		.align	1
 360              		.global	servus_SetPos
 361              		.thumb
 362              		.thumb_func
 364              	servus_SetPos:
 365              	.LFB2:
 199:uc_libc_dev/motors/servus.c **** 	if ( (servo==0) || (servo>SERVO_N_MODULE) ) return errDEVICE_NOT_FOUND;
 366              		.loc 1 199 0
 367              		.cfi_startproc
 368              		@ args = 0, pretend = 0, frame = 0
 369              		@ frame_needed = 0, uses_anonymous_args = 0
 370              		@ link register save eliminated.
 371              	.LVL12:
 200:uc_libc_dev/motors/servus.c **** 	if ( (us<100) || (us>3000)) return errDEVICE_VALUE_INVALID;
 372              		.loc 1 200 0
 373 0000 0138     		subs	r0, r0, #1
 374              	.LVL13:
 375 0002 0528     		cmp	r0, #5
 376 0004 0CD8     		bhi	.L53
 201:uc_libc_dev/motors/servus.c **** 	servoCtrl.servo[servo-1].pos = us;
 377              		.loc 1 201 0
 378 0006 40F65433 		movw	r3, #2900
 379 000a A1F16402 		sub	r2, r1, #100
 380 000e 9A42     		cmp	r2, r3
 381 0010 08D8     		bhi	.L54
 202:uc_libc_dev/motors/servus.c **** 
 382              		.loc 1 202 0
 383 0012 064B     		ldr	r3, .L55
 384 0014 0C22     		movs	r2, #12
 385 0016 02FB0030 		mla	r0, r2, r0, r3
 386              	.LVL14:
 387 001a 4160     		str	r1, [r0, #4]
 204:uc_libc_dev/motors/servus.c **** }
 388              		.loc 1 204 0
 389 001c 0120     		movs	r0, #1
 390 001e 7047     		bx	lr
 391              	.L53:
 200:uc_libc_dev/motors/servus.c **** 	if ( (us<100) || (us>3000)) return errDEVICE_VALUE_INVALID;
 392              		.loc 1 200 0
 393 0020 0348     		ldr	r0, .L55+4
 394 0022 7047     		bx	lr
 395              	.L54:
 201:uc_libc_dev/motors/servus.c **** 	servoCtrl.servo[servo-1].pos = us;
 396              		.loc 1 201 0
 397 0024 6FF49770 		mvn	r0, #302
 205:uc_libc_dev/motors/servus.c **** 
 398              		.loc 1 205 0
 399 0028 7047     		bx	lr
 400              	.L56:
 401 002a 00BF     		.align	2
 402              	.L55:
 403 002c 00000000 		.word	.LANCHOR0
 404 0030 D4FEFFFF 		.word	-300
 405              		.cfi_endproc
 406              	.LFE2:
 408              		.section	.text.servus_Enable,"ax",%progbits
 409              		.align	1
 410              		.global	servus_Enable
 411              		.thumb
 412              		.thumb_func
 414              	servus_Enable:
 415              	.LFB3:
 211:uc_libc_dev/motors/servus.c **** 	if ( (servo == 0) || (servo > SERVO_N_MODULE) ) return errDEVICE_NOT_FOUND;
 416              		.loc 1 211 0
 417              		.cfi_startproc
 418              		@ args = 0, pretend = 0, frame = 0
 419              		@ frame_needed = 0, uses_anonymous_args = 0
 420              	.LVL15:
 212:uc_libc_dev/motors/servus.c **** 	servoCtrl.servo[servo-1].enable = (en == 0)?0:1;
 421              		.loc 1 212 0
 422 0000 0138     		subs	r0, r0, #1
 423              	.LVL16:
 424 0002 0528     		cmp	r0, #5
 211:uc_libc_dev/motors/servus.c **** 	if ( (servo == 0) || (servo > SERVO_N_MODULE) ) return errDEVICE_NOT_FOUND;
 425              		.loc 1 211 0
 426 0004 10B5     		push	{r4, lr}
 427              	.LCFI3:
 428              		.cfi_def_cfa_offset 8
 429              		.cfi_offset 4, -8
 430              		.cfi_offset 14, -4
 212:uc_libc_dev/motors/servus.c **** 	servoCtrl.servo[servo-1].enable = (en == 0)?0:1;
 431              		.loc 1 212 0
 432 0006 0ED8     		bhi	.L59
 213:uc_libc_dev/motors/servus.c **** 	servoCtrl.servo[servo-1].count = 0;
 433              		.loc 1 213 0
 434 0008 0C23     		movs	r3, #12
 435 000a 5843     		muls	r0, r3, r0
 436              	.LVL17:
 437 000c 074A     		ldr	r2, .L60
 438 000e 0031     		adds	r1, r1, #0
 439 0010 135C     		ldrb	r3, [r2, r0]	@ zero_extendqisi2
 440 0012 18BF     		it	ne
 441 0014 0121     		movne	r1, #1
 442              	.LVL18:
 443 0016 61F30003 		bfi	r3, r1, #0, #1
 444 001a 1418     		adds	r4, r2, r0
 445 001c 1354     		strb	r3, [r2, r0]
 214:uc_libc_dev/motors/servus.c **** 	return pdPASS;
 446              		.loc 1 214 0
 447 001e 0023     		movs	r3, #0
 448 0020 A360     		str	r3, [r4, #8]
 215:uc_libc_dev/motors/servus.c **** }
 449              		.loc 1 215 0
 450 0022 0120     		movs	r0, #1
 451 0024 10BD     		pop	{r4, pc}
 452              	.LVL19:
 453              	.L59:
 212:uc_libc_dev/motors/servus.c **** 	servoCtrl.servo[servo-1].enable = (en == 0)?0:1;
 454              		.loc 1 212 0
 455 0026 0248     		ldr	r0, .L60+4
 216:uc_libc_dev/motors/servus.c **** 
 456              		.loc 1 216 0
 457 0028 10BD     		pop	{r4, pc}
 458              	.L61:
 459 002a 00BF     		.align	2
 460              	.L60:
 461 002c 00000000 		.word	.LANCHOR0
 462 0030 D4FEFFFF 		.word	-300
 463              		.cfi_endproc
 464              	.LFE3:
 466              		.section	.bss.servoCtrl,"aw",%nobits
 467              		.align	2
 468              		.set	.LANCHOR0,. + 0
 471              	servoCtrl:
 472 0000 00000000 		.space	76
 472      00000000 
 472      00000000 
 472      00000000 
 472      00000000 
 473              		.text
 474              	.Letext0:
 475              		.file 2 "uc_libc_dev/_libdef/uc_libdefs.h"
 476              		.file 3 "uc_libc_dev/_arch/arm_lpc/timer/timer1.h"
DEFINED SYMBOLS
                            *ABS*:00000000 servus.c
D:\_temp\_windows\ccZ19Aai.s:20     .text.servus_CallSytem:00000000 $t
D:\_temp\_windows\ccZ19Aai.s:24     .text.servus_CallSytem:00000000 servus_CallSytem
D:\_temp\_windows\ccZ19Aai.s:212    .text.servus_CallSytem:00000100 $d
D:\_temp\_windows\ccZ19Aai.s:219    .text.servus_Init:00000000 $t
D:\_temp\_windows\ccZ19Aai.s:224    .text.servus_Init:00000000 servus_Init
D:\_temp\_windows\ccZ19Aai.s:331    .text.servus_Init:00000094 $d
D:\_temp\_windows\ccZ19Aai.s:339    .text.servus_Finish:00000000 $t
D:\_temp\_windows\ccZ19Aai.s:344    .text.servus_Finish:00000000 servus_Finish
D:\_temp\_windows\ccZ19Aai.s:359    .text.servus_SetPos:00000000 $t
D:\_temp\_windows\ccZ19Aai.s:364    .text.servus_SetPos:00000000 servus_SetPos
D:\_temp\_windows\ccZ19Aai.s:403    .text.servus_SetPos:0000002c $d
D:\_temp\_windows\ccZ19Aai.s:409    .text.servus_Enable:00000000 $t
D:\_temp\_windows\ccZ19Aai.s:414    .text.servus_Enable:00000000 servus_Enable
D:\_temp\_windows\ccZ19Aai.s:461    .text.servus_Enable:0000002c $d
D:\_temp\_windows\ccZ19Aai.s:467    .bss.servoCtrl:00000000 $d
D:\_temp\_windows\ccZ19Aai.s:471    .bss.servoCtrl:00000000 servoCtrl
                     .debug_frame:00000010 $d

UNDEFINED SYMBOLS
timer1_Init
timer1_SetMatch0
timer1_SetIntHandler
timer1_Set
